package cn.iocoder.springboot.labs.config;

import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import static cn.iocoder.springboot.labs.FileController.enhancedFileTypeDetection;

@Component
public class FileTypeDebugger {
    /**
     * 完整的文件类型分析
     */
    public void analyzeFileType(MultipartFile file) {
        System.out.println("🔍 文件类型分析报告");
        System.out.println("=================================");

        String contentType = file.getContentType();
        String filename = file.getOriginalFilename();

        System.out.println("📄 文件名: " + filename);
        System.out.println("📋 Content-Type: " + contentType);
        System.out.println("📊 文件大小: " + file.getSize() + " 字节");

        if (contentType == null) {
            System.out.println("❌ MIME 类型: null (客户端未设置)");
        } else {
            String[] parts = contentType.split("/");
            System.out.println("🏷️  主类型: " + parts[0]);
            System.out.println("🔧 子类型: " + parts[1]);
        }

        // 检测文件类型
        String detectedType = enhancedFileTypeDetection(file);
        System.out.println("🎯 检测类型: " + detectedType);

        // 给出处理建议
        giveSuggestion(contentType, filename, detectedType);
        System.out.println("=================================\n");
    }

    private void giveSuggestion(String contentType, String filename, String detectedType) {
        System.out.println("💡 处理建议:");

        if ("other".equals(detectedType)) {
            System.out.println("   - 这是一个未知文件类型");
            System.out.println("   - 建议进行安全验证");
            System.out.println("   - 考虑限制此类文件上传");
        }

        if (contentType == null) {
            System.out.println("   - 客户端未设置 Content-Type");
            System.out.println("   - 建议前端修复上传逻辑");
        }

        if (contentType != null && contentType.equals("application/octet-stream")) {
            System.out.println("   - 这是通用的二进制流类型");
            System.out.println("   - 需要根据文件扩展名进一步验证");
        }
    }
}
